﻿using System;
using System.Collections.ObjectModel;
using PairingMatrix.Common.Command;
using PairingMatrix.Common.Enum;

namespace PairingMatrix.ViewModel
{
    public interface ICardWallViewModel
    {
        ObservableCollection<ITeamMemberCardViewModel> TeamMembers { get; set; }
        ObservableCollection<IProjectCardViewModel> ProjectCards { get; set; }
        ObservableCollection<IProjectCardViewModel> MingleCards { get; set; }
        IDateStripViewModel EndDateStrip { get;}
        IDateStripViewModel StartDateStrip { get;}
//        void PlaceProjectCardInSelectedColumn(IProjectCardViewModel projectCardViewModel);
        StoryStatus SelectedStoryStatus { get; set; }
        ISettingsViewModel SettingsViewModel { get;}
        bool IsSyncingAllProjectCards { get; }

        void AttachTeamMemberToProjectCard(ITeamMemberCardViewModel teamMemberCard, IProjectCardViewModel nearestProjectCard);
        void DetachTeamMemberFromAllProjectCards(ITeamMemberCardViewModel dataContext);
        void RemoveProjectCardFromWall(DateTime date, int cardNumber);
        void DeleteTeamMemberCard(Guid id);
        void AttachSecondaryProjectCardToProjectCard(IProjectCardViewModel secondaryCard, IProjectCardViewModel primaryCard, double projectCardX, double projectCardY);
        void DetachProjectCardFromAllProjectCards(IProjectCardViewModel projectCard);
        ITimer TimerViewModel { get; }
        string DaysToIterationEnd { get; }
        double TotalCostOfIceCreams { get; set; }

        IPriorityCounterViewModel ReadyForDevPriorityCounter { get; }
        IPriorityCounterViewModel InDevPriorityCounter { get; }
        IPriorityCounterViewModel InQAPriorityCounter { get; }
        IPriorityCounterViewModel ShowcaseDonePriorityCounter { get; }
        IPriorityCounterViewModel ClosedPriorityCounter { get; }
        AbsenteesViewModel AbsenteesViewModel { get; }

        RelayCommand ClearIceCreamsCommand { get; }
    }
}